#ifndef BACKEND_H
#define BACKEND_H

/*
    20241107 zd
    本文件实现了Backend类的相关功能。Backend类主要用于验证用户输入的用户名和密码在不同操作系统下是否有效。
    它通过根据当前操作系统（Windows或Linux）调用相应的系统函数来完成验证。
    在Windows系统中，使用LogonUser函数尝试使用输入的用户名和密码获取登录令牌，以此来验证凭据。
    在Linux系统中，通过读取系统的用户信息（/etc/passwd和相关加密密码），使用crypt函数来验证输入密码与存储密码是否匹配。
*/

#include <QObject>
#include <QString>

class Backend : public QObject
{
    Q_OBJECT

public:
    explicit Backend(QObject *parent = nullptr);
    Q_INVOKABLE bool verifyCredentials(const QString& username, const QString& password);
    Q_INVOKABLE void setHostInfo(QString host, QString user);

    Q_PROPERTY(QString host                 READ host                      NOTIFY hostChanged)
    Q_PROPERTY(QString user                 READ user                      NOTIFY userChanged)

    QString host  () { return _host; }
    QString user  () { return _user; }

signals:
    void hostChanged              (QString host);
    void userChanged              (QString user);

private:
    QString _host = "";
    QString _user = "";
};

#endif // BACKEND_H

